import java.util.*;
/*给定一个表示 大整数 的整数数组 digits，其中 digits[i] 是整数的第 i 位数字。
这些数字按从左到右，从最高位到最低位排列。这个大整数不包含任何前导 0。
将大整数加 1，并返回结果的数字数组。
示例 1：
输入：digits = [1,2,3]
输出：[1,2,4]*/
public class Test {
    public static int[] add(int[] digits) {
        List<Integer> result = new ArrayList<>();
        int carry = 1; // 初始加1

        for (int i = digits.length - 1; i >= 0; i--) {
            int sum = digits[i] + carry;
            result.add(0, sum % 10); // 在列表开头添加
            carry = sum / 10;
        }

        // 如果还有进位，需要扩容
        if (carry > 0) {
            result.add(0, carry);
        }

        // 转换回数组
        int[] array = new int[result.size()];
        for (int i = 0; i < result.size(); i++) {
            array[i] = result.get(i);
        }
        return array;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] digits = new int[n];
        for (int i = 0; i < n; i++) {
            digits[i] = sc.nextInt();
        }
        int[] addone = add(digits);
        System.out.println(Arrays.toString(addone));
    }
}